import { ResPage, Option, SysUser } from "@/api/interface/index";
import { CANROCNET } from "@/api/config/servicePort";
import http from "@/api";

/**
 * 新增系统用户
 *
 * @param params 用户表单
 * @returns 返回是否成功
 */
export const addUserApi = (params: SysUser.Form) => {
  return http.post<boolean>(`${CANROCNET}/api/sys-user/addition`, params);
};

/**
 * 批量添加系统用户
 *
 * @param params 用户表单
 * @returns 返回是否成功
 */
export const batchAddUserApi = (params: FormData) => {
  return http.post<boolean>(`${CANROCNET}/api/sys-user/import`, params);
};

/**
 * 编辑系统用户
 *
 * @param params 用户表单
 * @returns 返回是否成功
 */
export const editUserApi = (params: SysUser.Form) => {
  return http.post<boolean>(`${CANROCNET}/api/sys-user/edit`, params);
};

/**
 * 启用/禁用系统用户
 *
 * @param params 用户Id
 * @returns 返回是否成功
 */
export const switchEnableUserApi = (params: { id: string }) => {
  return http.post<boolean>(`${CANROCNET}/api/sys-user/enable`, params);
};

/**
 * 解除系统用户账号锁定
 *
 * @param params 用户Id
 * @returns 返回是否成功
 */
export const unlockUserApi = (params: { id: string }) => {
  return http.post<boolean>(`${CANROCNET}/api/sys-user/unlock`, params);
};

/**
 * 重置系统用户密码
 *
 * @param params 用户Id
 * @returns 返回是否成功
 */
export const resetUserPassWordApi = (params: { id: string }) => {
  return http.post<boolean>(`${CANROCNET}/api/sys-user/reset`, params);
};

/**
 * 修改系统用户密码
 *
 * @param params 用户Id和新密码
 * @returns 返回是否成功
 */
export const editUserPassWordApi = (params: { id: string; passWord: string }) => {
  return http.post<boolean>(`${CANROCNET}/api/sys-user/reset`, params);
};

/**
 * 删除系统用户
 *
 * @param params 用户Id
 * @returns 返回是否成功
 */
export const deleteUserApi = (params: { ids: string[] }) => {
  return http.post<boolean>(`${CANROCNET}/api/sys-user/del`, params);
};

/**
 * 根据角色编码获取用户选项
 *
 * @param code 角色编码
 * @returns 返回用户详情
 */
export const getUserOptionByRoleApi = (code: string) => {
  return http.get<Option.SelectOption[]>(`${CANROCNET}/api/sys-user/select-option/role/${code}`, {}, { loading: false });
};

/**
 * 获取所有用户信息
 *
 * @returns 返回用户信息
 */
export const getAllUserApi = () => {
  return http.get<SysUser.InfoResult[]>(`${CANROCNET}/api/sys-user/all-user`, {}, { loading: false });
};

/**
 * 获取系统用户列表
 *
 * @param params 用户查询参数
 * @returns 返回用户列表
 */
export const getUserPageApi = (params: SysUser.PageParams) => {
  return http.get<ResPage<SysUser.Result>>(`${CANROCNET}/api/sys-user/page`, params);
};

/**
 * 导出系统用户数据
 *
 * @param params 用户查询参数
 * @returns 返回文件流
 */
export const exportUserApi = (params: SysUser.PageParams) => {
  return http.download(`${CANROCNET}/api/sys-user/export`, params);
};
